¿Cómo unificar todas estas deformaciones? Es decir, crear un marco común a todas ellas.
Idea: supongamos que sobre una imagen podemos colocar una capa de agua. Podemos poner gotas, hacer ondas, formar olas, etc.
La deformación de la imagen es el resultado de la refracción de la luz, al pasar del aire al agua.
R
Imagen deformada
Imagen original
Superficie de agua
Esta es la idea, pero en 2D
A
S
Ojo, la superficie deformante, S, no es ni más ni menos que una imagen, donde el valor de un píxel S(x,y) indica la altura del agua en ese punto.
S1. Superficie de efecto pinchar/estirar
S2. Superficie de efecto de ondas marinas
Ahora sólo hay que calcular los rayos incidentes, el ángulo de refracción de cada uno, y el sitio donde choca con el fondo…
S(x,y):= e-((x-cx)2+(y-cy)2)/s2
S(x,y):= sen(f·sqrt((x-cx)2+(y-cy)2))
Objetivo: dada una imagen A, una superficie deformante S (imagen de 1 solo canal) definir la transformación geométrica correspondiente: R(x,y):= A(f1(x,y,S), f2(x,y,S))
En una dimensión: en el caso de mayor refracción, el rayo se desvía perpendicularmente a la superficie del agua.
R
Imagen deformada
Imagen original
Superficie deformante
A
S
x
tx
¡Esto es lo que nos interesa! ¿Cuánto vale?
S(x)
a
tx/S(x) = tan(a)
Pero tan(a) es la pendiente de S en x ? tx = S(x)·S’(x)
¡Ya está! ? R(x):= A( x + S(x)·dS(x)/dx )
Y en dos dimensiones:
R(x,y):= A( x + S(x,y)·dS(x,y)/dx , y + S(x,y)·dS(x,y)/dy )
Ale, ¡todos a derivar!
S(x,y)·dS(s,y)/dx = e-((x-cx)2+(y-cy)2)/s2·d(e-((x-cx)2+(y-cy)2)/s2)/dx == -2(x-cx)/s2·e-2((x-cx)2+(y-cy)2)/s2 ….
Y así para cualquier función…
Pero, ¿qué vimos en el tema anterior?
La derivada en X (o en Y) de una imagen se puede calcular con un filtro de convolución adecuado: Sobel, Prewitt, Scharr, etc.
Además, de esta forma podemos usar cualquier superficie deformante arbitraria.
Cachis… ¿no habrá una forma más sencilla?
Algoritmo. Transformación de una imagen A según la superficie deformante S.
1) Calcular Gx:= Sx ? Ssiendo Sx una máscara de derivada en X
2) Calcular Gy:= Sy ? Ssiendo Sy una máscara de derivada en Y
3) Calcular MapaX(x,y):= x + a·S(x,y)·Gx(x,y)
4) Calcular MapaY(x,y):= y + a·S(x,y)·Gy(x,y)
5) Obtener la imagen resultante:
R(x,y):= A(MapaX(x,y), MapaY(x,y))
Notas: todas las imágenes (A, S, Gx, Gy, MapaX, MapaY, R) son del mismo tamaño.
El parámetro a indica el grado de la transformación. Cuanto mayor, más pronunciada.
Sx
Sy
Ejemplo. Aplicación de la deformación de ondas.
Im. de entrada, A
Sup. deformante, S
Im. de salida, R
Derivada X, Gx
Derivada Y, Gy
Mapa Y, S·Gy
Mapa X, S·Gx
Superficie en 3D
Ojo: -1=Negro, +1=Blanco
Transformación de ondas:
S(x,y):= sen(f·sqrt((x-cx)2+(y-cy)2)+p)
(cx, cy): centro de las ondas
f: frecuencia; p: fase
Transformación apretar/pinchar:S(x,y):= e-((x-cx)2+(y-cy)2)/s2
(cx, cy): centro de la deformación
s: anchura de la zona deformada
a: fuerza de la deformación; a<0 ? pinchar, a>0 ? estirar
Variación de frecuencia
Variación de fase
Variación de fuerza
Lo interesante de esta transformación es que se puede usar cualquier imagen como superficie deformante.
A1
S1
R1
A2
S2
R2
Las transformaciones geométricas son esenciales en las composiciones panorámicas.
Idea: obtener la imagen que debería estar pegada a un cilindro que envuelve todo el campo visual del sujeto.
Cuestión: ¿cómo se proyectan las imágenes individuales en el cilindro?
Imágenes de entrada
Imagen resultado
Idea: la X en la panorámica es el ángulo en el cilindro.
La proyección de un punto (xa,ya) de la imagen viene dada por la intersección de la recta que pasa por (xa,ya,1) y (0,0,0), y el cilindro con radio 1, a lo largo del eje Y.
XA
YA
YR
XR
(Gp:) X
(Gp:) Y
(Gp:) Z
(Gp:) (xa,ya)
Vista superior
1
¿Dónde toca la imagen con el cilindro? Centro: (xc,yc)
Si todas las fotos se toman desde el centro, sin mover la cámara (sólo girarla en Y), el punto (xc,yc) será el centro de la imagen (mX/2, mY/2).
Si hay giro arriba o abajo, sí que se modifica yc.
Y también puede haber giro a lo largo de Z.
Otro parámetro es cuántos grados corresponden al ancho de una foto, es decir cuánto es el campo visual. Lo podemos medir en el número de píxeles que representan 45º, fp.
Con estos parámetros, la transformación será:
xR:= arctan ((xA-xc)/fp)
yR:= (yA-yc)/sqrt((xA-xc)2 + (yA-yc)2 + fp))
xR estará entre -90º y 90º,yR entre -mY/2 y mY/2.
Ojo, esta fp no es ni más ni menos que la distancia focal
Podrá variar según el valor del zoom
Pero, cuidado, lo que necesitamos son las funciones f1(x,y) y f2(x,y) (de R(x,y):= A(f1(x,y), f2(x,y)) que vienen dadas por las inversas:
f1(x,y):= xc + fp·tan x
f2(x,y):= yc + y·sqrt(1+tan2 x)
En definitiva, tenemos una transformación con 3 parámetros:
El centro de la imagen (cx, cy).
La distancia focal, en píxeles, fp.
Ejemplo. Variación de df, con centro (mx/2, my/2), 480×360.
df = 20 pix.
df = 120 pix.
df = 530 pix.
La distancia focal no cambia, si no cambiamos el zoom entre una foto y otra. Se puede calibrar una vez y usarla en todas las fotos de la composición.
El centro en X se puede dejar en la mitad de la imagen, si no cambiamos el eje de rotación.
El centro en Y, cy, puede cambiar.
El giro en el eje Z también. Se puede corregir con una rotación afín a priori.
Por último, se debe encontrar el desplazamiento en X para ajustar las imágenes.
Calibración previa
Calibración para cada grupo de imágenes
Proceso:
1) Buscar puntos análogos (de forma manual o automática) entre cada par de imágenes consecutivas.
2) Calcular los parámetros de la transformación, usando los puntos definidos.
3) Transformar las imágenes individualmente.
4) Componer las imágenes resultantes.
Versión simplificada (aunque inexacta):
Normalmente la distancia focal será grande y se puede sustituir la transf. anterior por una simple transf. afín.
Parámetros de la transf. afín: desplazamiento (dx,dy), escala s (igual en ambos ejes) y rotación r. No hay inclinac.
Con dos puntosanálogos bastapara resolverlos 4 parámetros.
Es mucho más sencillo, pero peor. Observar la línea quebrada del canal
Corrección de la distorsión radial
La distorsión radial es una deformación introducida por las lentes de las cámaras, que da lugar a un curvado de las zonas periféricas de las imágenes.
Observar la curvatura de la puerta
La distorsión radial se modela como un desplazamiento radial, según la distancia, r, al centro de la imagen de la forma:
p·(1 + k1r2 + k2r4)
Corrección de la distorsión radial:
R(x,y):= A((x-cx)(1+k1r2+k2r4)+cx , (y-cy)(1+k1r2+k2r4)+cy)
con r2 = (x-cx)2 + (y-cy)2
Para poder aplicarla, tenemos que encontrar valores adecuados de k1, k2, cx y cy. ? Calibración.
Posibilidades: hacer pruebas, o bien obtener 4 ecuaciones.
Imagen de entrada (384×288)
Imagen resultantecon k1= -2,9·10-7, k2= -1·10-13
Otro tipo de transformaciones geométricas interesantes son las de morphing, muy usadas en efectos especiales.
El morphing es un efecto de transición suave y progresiva entre dos (o más) imágenes.
Está basado en algunas ideas ya estudiadas:
Una transformación geométrica, definida por un conjunto de puntos de origen, S, y otro de destino, D. El proceso es similar a la transformación de malla, pero en lugar de rectángulos se usan segmentos equivalentes.
La transf. geométrica está graduada, entre las posiciones de origen y de destino. 0%: posiciones de origen, 100%: posiciones de destino, 50%: término medio entre ambos.
El color de un píxel es una media ponderada, entre la imagen origen y destino, según el grado de la transformación.
Morphing entre dos imágenes basado en líneas.
Paso 1. Establecersegmentos equivalentesentre dos imágenes.
Segmentos origen, S
Segmentos destino, D
S= (s1, s2, …, sn)
D= (d1, d2, …, dn)
Paso 2. Repetir el proceso para g desde 0 hasta 1.En el paso g, los segmentos intermedios son: ik= (1-g)sk + g·dk
A
B
Morphing entre dos imágenes basado en líneas.
2.1. Transformar A, moviendo los puntos de S a I ? R1
2.2. Transformar B, moviendo los puntos de D a I ? R2
2.3. Media ponderada: R= (1-g)R1 + g·R2
Conclusiones:
Las transformaciones de mapeo son el caso general de las transformaciones geométricas.
Permiten modelar los efectos producidos por fenómenos físicos naturales.
Para simularlos (efecto de ondas, pinchar, estirar…).
Para corregirlos (distorsión radial, aberraciones en las lentes…).
Y también otras cosas no naturales: efectos especiales.
La transformación de mapeo está definida por un par de funciones f1, f2, (RxR ? R) o bien un par de imágenes mapax, mapay.
Página anterior | Volver al principio del trabajo | Página siguiente |